<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<ul>
    <li>
        <div>flutter开发</div>
        <ul>
            <li>
                <div>面试题</div>
                <ul>
                    <li>有状态组件：StatelessWidget和 无状态组件：StatelessWidget </li>
                    <li>
                        <div>有状态组件：生命周期</div>
                        <ul>
                            <li>constructor</li>
                            <li>initState</li>
                            <li>didChangeDependencies(和全局状态有关)</li>
                            <li>build</li>
                            <li>deactivate</li>
                            <li>dispose</li>
                        </ul>
                        <div>执行setState 父组件</div>
                        <ul>
                            <li>build</li>
                        </ul>
                        <div>执行setState 子组件</div>
                        <ul>
                            <li>didUpdateWidget</li>
                            <li>build</li>
                        </ul>
                    </li>
                    <li>
                        <div>
                            day001 生命周期
                        </div>
                        <ul>
                            <li>
                                <p>
                                    场景 1：前台转后台：

                                    AppLifecycleState.inactive
                                    AppLifecycleState.paused
                                    场景 2：后台转前台：

                                    AppLifecycleState.inactive
                                    AppLifecycleState.resumed
                                </p>
                            </li>
                        </ul>
                    </li>
                </ul>
            </li>
            <li>
                <div>dart语言特性</div>
                <ul>
                    <li>
                        <div>stream</div>
                        <ul>
                            <li>Stream.periodic</li>
                            <li>Stream.periodic.asBroadcastStream（转换多订阅流）</li>
                            <li>Stream.fromFuture</li>
                            <li>Stream.fromIterable</li>
                            <li>stream.listen</li>
                            <li>stream.take(3)</li>
                            <li>stream.skip(3)</li>
                            <li>
                                <div>StreamController</div>
                                <div>StreamController.broadcast</div>
                                <ul>
                                    <li>包含 Stream</li>
                                    <li>包含 Sink</li>
                                    <li>StreamSubscription = sc.stream.listen</li>
                                    <li>Stream = sc.stream.transform</li>
                                    <li>sc.sink.add</li>
                                    <li>sc.addStream</li>
                                </ul>
                                <div>StreamSubscription</div>
                                <ul>
                                    <li>pause</li>
                                    <li>cancel</li>
                                </ul>
                                <div>StreamTransformer(转接头)</div>
                                <div>StreamController -> StreamSink -> EventSink -> Sink</div>
                            </li>
                        </ul>
                    </li>
                    <li>
                        <ul>
                            <li>microtask queue</li>
                            <li>scheduleMicrotask</li>
                            <li>event queue</li>
                        </ul>
                    </li>
                    <li>
                        <div>我不知道的api</div>
                        <ul>
                            <li>runtimeType 和 is</li>
                            <li>int.parse</li>
                            <li>double.parse</li>
                            <li>String name = 'meiyang\nhello'</li>
                            <li>''' '''保留原格式，类似于p标签</li>
                            <li>class C extends Parent with A, B implements AA, BB {}</li>
                        </ul>
                    </li>
                    <li>
                        <div>问题</div>
                        <ul>
                            <li>
                                <div>
                                    StoreInheritedWidget? storeContext = MyVuex.of(context);
                                    Text(name!),
                                    Text(age!),
                                </div>
                            </li>
                        </ul>
                    </li>
                </ul>
            </li>
            <li>
                <div>基本ui使用</div>
                <ul>
                    <li>MaterialApp</li>
                </ul>
            </li>
            <li>
                <div>路由</div>
                <ul>
                    <li>
                        <div>Navigator（命令式）</div>
                        <ul>
                            <li>Navigator.push</li>
                            <li>Navigator.of(context).push</li>
                            <li>通过构造方法传参</li>
                            <li>WillPopScope</li>
                        </ul>
                        <ul>
                            <li>Feature res = Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) => const Page()))</li>
                            <li>Feature res = Navigator.of(context).push(context, MaterialPageRoute(builder: (BuildContext context) => const Page()))</li>
                            <li>Navigator.pop(context, '我是参数')</li>
                        </ul>
                    </li>
                    <li>
                        <div>Route（声明式 2.0 比命令式更强大，基于命令式创建的）</div>
                        <ul>
                            <li>onGenerateRoute(setting)</li>
                        </ul>
                        <ul>
                            <li>MaterialApp 开启routes选项</li>
                            <li>MaterialApp 开启onGenerateRoute解析参数</li>
                            <li>MaterialApp 开启initialRoute</li>
                            <li>MaterialApp 开启onUnKnownRoute</li>
                        </ul>
                        <ul>
                            <li>Navigator.pushNamed(context, '/home', arguments: '命名路由传参')</li>
                            <li>Navigator.pop(context, '我是参数')</li>
                        </ul>
                    </li>
                    <li>
                        <div>Fluro</div>
                        <div>
                            router.define(
                                "/NextPage",
                                handler: Handler(
                                handlerFunc: (ctx, params) {
                                        return NextPage();
                                    },
                                ),
                            );

                            router.navigateTo(
                                context,
                                "/NextPage",
                                transition: TransitionType.nativeModal,
                            );
                        </div>
                    </li>
                </ul>
            </li>
            <li>
                <div>网络请求</div>
                <ul>
                    <li>HttpClient</li>
                    <li>Http</li>
                    <li>Dio</li>
                </ul>
                <div>
                    <div>httpClient步骤繁琐</div>
                    <div>Http和dio简单，dio的使用者更多</div>
                </div>
            </li>
            <li>
                <div>状态管理</div>
                <ul>
                    <li>inheritedWidget</li>
                    <li>bloc</li>
                    <li>provider</li>
                </ul>
            </li>
            <li>
                <div>本地存储</div>
                <ul>
                    <li>shared_preferences</li>
                    <li>sqlite</li>
                </ul>
            </li>
            <li>
                <div>日期转换</div>
                <ul>
                    <li>手写 DateTime.now();</li>
                    <li>
                        <div>intl</div>
                        <div>
                            DateTime now = DateTime.now();<br>
                            var formatter = DateFormat('yy-MM-dd hh:mm:ss');<br>
                            return formatter.format(now);<br>
                        </div>
                    </li>
                </ul>
            </li>
            <li>
                <div>加密算法</div>
                <ul>
                    <li>encrypt: AES、 Fernet 和 Salsa</li>
                    <li>crypto: md5</li>
                </ul>
            </li>
            <li>
                <div>json解析</div>
                <ul>
                    <li>手写</li>
                </ul>
            </li>
            <li>
                <div>屏幕适配</div>
                <ul>
                    <li>ScreenUtils</li>
                    <li>appBar</li>
                    <li>bottomNavigationBar</li>
                    <li>scaffold</li>
                    <li>mediaQuery.of(context).padding</li>
                    <li>SafeArea</li>
                </ul>
            </li>
            <li>
                <div>Loading、Toast、alert</div>
                <ul>
                    <li>bot_toast</li>
                </ul>
            </li>
            <li>flutter嵌入其他flutter项目</li>
            <li>
                <div>组件</div>
                <ul>
                    <li>
                        <div>核心组件</div>
                        <ul>
                            <li>Dio</li>
                            <li>Fluro</li>
                            <li>SQLite</li>
                            <li>Bloc</li>
                        </ul>
                    </li>
                    <li>
                        <div>功能组件</div>
                        <ul>
                            <li>Loading</li>
                            <li>Toast</li>
                            <li>Alert</li>
                            <li>DateSheet</li>
                        </ul>
                    </li>
                    <li>
                        <div>工具组件</div>
                        <ul>
                            <li>日期转换</li>
                            <li>数据加密</li>
                            <li>Json解析</li>
                            <li>屏幕适配</li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
    <li>flutter对接原生开发</li>
    <li>flutter如何和webview交互 （webview_flutter）</li>
    <li>flutter如何渲染页面</li>
    <li>
        灰页面
        <ul>
            <li>经过排查后发现是Expanded、Flexible等组件，在“Container、Padding、Stack”组件中导致的。</li>
            <li>Expanded、Flexible只在Row、Column等组件内，不在其他组件内使用。</li>
        </ul>
    </li>

    <li>Column能直接包裹ListView？ (给ListView设置高度)</li>
    <li>状态管理原理</li>
    <li>跨域，跨域解决办法</li>
    <li>通信原理</li>
    <li>小程序 父子组件传参</li>
</ul>
<script>

</script>
</body>
</html>
